import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        // 创建一个LinkedList实现的Queue接口实例
        // LinkedList实现了Queue接口，可以用作队列
        Queue<Integer> queue = new LinkedList<>();

        // 使用add方法添加元素到队列尾部，如果队列已满会抛出异常
        // 这里添加元素1
        queue.add(1);

        // 使用offer方法添加元素到队列尾部，与add不同的是在队列已满时返回false而不是抛出异常
        // 这里依次添加元素2、3、4、5
        queue.offer(2);
        queue.offer(3);
        queue.offer(4);
        queue.offer(5);
        // 打印队列当前的大小:5
        System.out.println(queue.size());//5

        // 使用peek方法查看队列头部元素但不移除，队列为空时返回null
        // 这里应该返回第一个添加的元素1
        System.out.println(queue.peek());//1

        // 使用element方法查看队列头部元素但不移除，与peek不同的是队列为空时抛出异常
        // 这里应该同样返回1
        System.out.println(queue.element());//1

        // 使用poll方法移除并返回队列头部元素，队列为空时返回null
        // 这里移除元素1
        queue.poll();
        // 再次peek查看头部元素，现在应该是2
        System.out.println(queue.peek());//2

        // 使用poll移除并返回头部元素，这里应该移除并返回2
        System.out.println(queue.poll());//2
        // 再次peek查看头部元素，现在应该是3
        System.out.println(queue.peek());//3

        // 使用remove方法移除并返回队列头部元素，与poll不同的是队列为空时抛出异常
        // 这里移除元素3
        queue.remove();
        // 使用element查看头部元素，现在应该是4
        System.out.println(queue.element());//4

        // 检查队列是否为空
        if(queue.isEmpty()) {
            System.out.println("队列空啦");
        } else {
            // 打印当前队列大小，此时队列中还有4和5两个元素，所以大小是2
            System.out.println(queue.size());//2
        }
    }
}